/*
 * linda.h
 *
 */

#ifndef LINDA_H_
#define LINDA_H_

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <unistd.h>
#include "tuple.h"
#include "rwlock.h"
#include "semaphore.h"
#include "pattern.h"


typedef struct{
	char* path;
	_linda_rw_lock lock;
	_linda_rw_condition cond; // nie wspoldzielone
}linda_space;

linda_space* linda_create(const char *path);
linda_space* linda_init(const char *path);
void linda_output(const linda_space * linda,const  tuple * t);
tuple* linda_input(const linda_space * linda,const pattern p ,int timeout);
tuple* linda_read(const linda_space * linda,const  pattern p ,int timeout);
void linda_close(const linda_space * linda);

pattern* read_pattern(const char * path, int *pid);
void write_pattern(const char * path,const  pattern* p);

tuple* read_tuple(const char * path);
void write_tuple(const char * path,const tuple* t);



#endif /* LINDA_H_ */
